/**
 * 
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 * 
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"14C0442A-AD54-4560-83C0-404470ABABA4"}
 * @AllowToRunInFind
 */
function elige_producto(oldValue,newValue,event)
{
	if (newValue == null)
	{
		precio_unitario = null
		total_renglon 	= null
		iva_porc 		= null
		descuento_porc 	= null
		cantidad_dec 	= null
		return true
	}
	
	if (forms.fac_mino.cliente_id == null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar cliente','OK')
		producto_id		= null;
		return true;
	}
	
	if (fac_detalle_to_productos.tipo_descripcion == 2)
	{
		cantidad_dec 		= null
		precio_unitario 	= null
		descuento_importe 	= null
		descuento_porc 		= null
		iva_porc 			= null
		total_renglon 		= null
		elements.fld_texto.requestFocus()
		return true
	}
	
	if (ped_detalle_id)
	{
		globals.DIALOGS.showWarningDialog('Aviso','No puede cambiar el producto de un pedido','OK')
		producto_id = oldValue
		return true
	}
	if (rem_detalle_id)
	{
		globals.DIALOGS.showWarningDialog('Aviso','No puede cambiar el producto de un remito','OK')
		producto_id = oldValue
		return true
	}
	if (!validarTipoProducto())
	{
		globals.DIALOGS.showWarningDialog('Aviso','Este producto no es del mismo tipo que la factura','OK')
		producto_id = oldValue
		return true
	}
	if (fac_detalle_to_productos.origen == null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Este producto no tiene definido su origen','OK')
		producto_id = oldValue
		return true
	}
	precio_unitario = fac_detalle_to_productos.productos_to_monedas.cotizacion * fac_detalle_to_productos.precio_unitario
	descuento_porc	= fac_detalle_to_productos.descuento; 
	if (!recalcula_precio())
	{
		precio_unitario = null
		total_renglon 	= null
		iva_porc 		= null
		descuento_porc 	= null
		cantidad_dec 	= null
		return false
	}
	texto = fac_detalle_to_productos.descripcion
	elements.cantidad.requestFocus();
	return true
}

/**
 * @properties={typeid:24,uuid:"A7E29120-5BC1-4CFF-ACA3-41C741521CC7"}
 */
function validarTipoProducto()
{
	var $sql = 'SELECT fac_conceptos_productos_id FROM fac_conceptos_productos WHERE fac_concepto_id = ? AND tipo_producto = ?'
	var $args = [forms.fac_mino.fac_concepto_id, fac_detalle_to_productos.tipo]
	var $ds = databaseManager.getDataSetByQuery('infocom',$sql,$args,-1)
	if ($ds.getMaxRowIndex() == 0)
	{
		return false
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"E9F07C14-3C49-4D31-8483-E7A716CEFD84"}
 */
function calculaCoeficienteIva() {
	var $multi = 1
	if (!forms.fac_mino.fac_cabecera_to_clientes.clientes_to_relacion_iva_letra)
	{
		globals.DIALOGS.showWarningDialog('Aviso','El cliente no tiene definida la tasa de iva','OK')
		return -1
	}
	if (forms.fac_mino.fac_cabecera_to_clientes.clientes_to_relacion_iva_letra.rel_iva_calcula == 1)
	{ //  DISCRIMINA
		if (!fac_detalle_to_productos.productos_to_tasa_iva)
		{
			globals.DIALOGS.showWarningDialog('Aviso','El producto no tiene definida la tasa de iva','OK')
			return -1
		}
		iva_porc = fac_detalle_to_productos.productos_to_tasa_iva.tasa_iva_porc
		if (forms.fac_mino.fac_cabecera_to_clientes.clientes_to_relacion_iva_letra.rel_iva_discrimina == 1)
		{
			$multi = 1;  // es A
		}
		else  // es B 
			$multi = 1 + iva_porc / 100
	}
	else
	{ //NO CALCULA IVA
		iva_porc 	= 0
		$multi 		= 1;
	}
	return $multi
}

/**
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"7D9D2CFA-7D2A-49A7-A5B2-4E89E65B0191"}
 */
function recalcula_total_renglon() 
{
	var $iva_coef = calculaCoeficienteIva()
	if ($iva_coef == -1)
		return false
	total_renglon = utils.stringToNumber(utils.numberFormat($iva_coef * (precio_unitario * cantidad_dec - descuento_importe),2))
	forms.fac_mino.totalizar()
	return true
}

/**
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"5BFB6B73-8B1A-4030-BC5D-77B2E15457FA"}
 */
function recalcula_precio() 
{
	descuento_importe	= precio_unitario * cantidad_dec * (descuento_porc / 100);
	return recalcula_total_renglon()
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"FD409CF9-D752-4326-9C1C-14A8CE341B12"}
 */
function ver_stock(event) 
{
	if (producto_id)
	{
		forms.stock_del_producto.controller.loadRecords(producto_id);
		
		globals.formEnVentana('stock_del_producto','ver_stock','Stock')
	}
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"F38B8DD9-6A3E-45B7-8F45-AC0DFA00C460"}
 */
function onDataChange_descuento(oldValue, newValue, event)
{
	//  DESCUENTO TOPE PERMITIDO
	if (globals.descuento_permitido(descuento_porc) == false)	
	{
		descuento_porc = oldValue;
		return true;  
	}
	recalcula_precio()
	return true;
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"219E6FF8-AE09-4526-8701-5B7174D367DE"}
 */
function onDataChange_cantidad(oldValue, newValue, event) 
{
	if (fac_detalle_to_productos.tipo_descripcion == 2)
	{
		cantidad_dec = null
		return true
	}
	recalcula_precio()
	if (precio_unitario)
	{
		if (fac_detalle_to_productos.tipo_descripcion == 0){
			forms.fac_mino.fac_cabecera_to_fac_detalle.newRecord(false)
			elements.fld_producto_id.requestFocus()
		}
		else
		{
			elements.fld_texto.requestFocus()
			elements.fld_texto.caretPosition = texto.length
		}
	}
	else
		elements.fld_precio_unitario.requestFocus()
	return true
}

/**
 * Handle changed data.
 *
 * @param {Number} oldValue old value
 * @param {Number} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"D1F51A9C-542E-4A4C-A617-CCA039802792"}
 */
function onDataChangePrecioUnitario(oldValue, newValue, event) {
	descuento_importe	= precio_unitario * (descuento_porc / 100);
	recalcula_total_renglon();
	if (!oldValue)
	{
		forms.fac_mino.fac_cabecera_to_fac_detalle.newRecord(false)
		elements.fld_producto_id.requestFocus()
	}
	return true
}

/**
 * Handle changed data.
 *
 * @param {String} oldValue old value
 * @param {String} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"F8FE9737-04A3-47AB-B90E-1A388EED987F"}
 */
function onDataChangeTexto(oldValue, newValue, event) {
	forms.fac_mino.fac_cabecera_to_fac_detalle.newRecord(false)
	elements.fld_producto_id.requestFocus()
	return true
}
